package com.ny.service;

import com.ny.domain.CourseScheduleDO;
import com.ny.domain.EmployeeDO;
import com.ny.dto.CourseScheduleDTO;
import com.ny.dto.EmployeeDTO;
import com.ny.query.CourseScheduleQuery;
import com.ny.query.EmployeeQuery;
import java.lang.Boolean;
import java.util.List;

/**
 * 员工管理
 *
 * @author MSI-NB
 * @date 2025-03-08 13:14:38
 */
public interface EmployeeService {

    /**
     * 新增员工
     *
     * @param employeeDTO 员工信息DTO
     * @return
     */
    Boolean addEmployee(EmployeeDTO employeeDTO);

    /**
     * 删除员工
     *
     * @param employeeQuery 员工查询条件
     * @return
     */
    Boolean deleteEmployee(EmployeeQuery employeeQuery);

    /**
     * 更新员工信息
     *
     * @param employeeDTO 员工信息DTO
     * @return
     */
    Boolean updateEmployee(EmployeeDTO employeeDTO);

    /**
     * 查询员工信息
     *
     * @param employeeQuery 员工查询条件
     * @return  员工信息DO
     */
    EmployeeDO getEmployeeInfo(EmployeeQuery employeeQuery);

    /**
     * 生成课程表
     *
     * @param courseScheduleDTO 课程表信息DTO
     * @return
     */
    Boolean addCourseSchedule(CourseScheduleDTO courseScheduleDTO);

    /**
     * 删除课程表
     *
     * @param courseScheduleQuery 课程表查询条件
     * @return
     */
    Boolean deleteCourseSchedule(CourseScheduleQuery courseScheduleQuery);

    /**
     * 更新课程表
     *
     * @param courseScheduleDTO 课程表信息DTO
     * @return
     */
    Boolean updateCourseSchedule(CourseScheduleDTO courseScheduleDTO);

    /**
     * 查询课程表
     *
     * @param courseScheduleQuery 课程表查询条件
     * @return  课程表信息DO
     */
    CourseScheduleDO getCourseScheduleInfo(CourseScheduleQuery courseScheduleQuery);

    /**
     * 查询员工列表
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<EmployeeDO> queryList(int pageNum, int pageSize);
}
